package Controlador;

import java.util.ArrayList;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;

import model.Cliente;
import model.UsuarioOnline;
import DAO.ClienteDAO;
import DAO.UsuarioDAO;

@ManagedBean //1. anotar el tipo de objeto
@ViewScoped
public class AsignarUsuarioOnline 
{
	//2. inject dependencias
	@Inject
	UsuarioDAO udao;
	@Inject
	ClienteDAO cdao;
	
	//3.crear los atributos
	ArrayList<UsuarioOnline> listaUonline= new ArrayList();
	ArrayList<Cliente> listaClientes=new ArrayList<Cliente>();
	Cliente clienteSeleccionado;
	UsuarioOnline usuarioSeleccionado;
	
	//Si es necesario inicializar las variables
	@PostConstruct
	public void cargarDatos()
	{
		listaUonline=udao.listarDisponibles();
		listaClientes= cdao.listarClientesSinUsr();		
	}
	
	
	
	//4.Encapsular Atributos
	public ArrayList<UsuarioOnline> getListaUonline() {
		return listaUonline;
	}
	public void setListaUonline(ArrayList<UsuarioOnline> listaUonline) {
		this.listaUonline = listaUonline;
	}
	public ArrayList<Cliente> getListaClientes() {
		return listaClientes;
	}
	public void setListaClientes(ArrayList<Cliente> listaClientes) {
		this.listaClientes = listaClientes;
	}
	public Cliente getClienteSeleccionado() {
		return clienteSeleccionado;
	}
	public void setClienteSeleccionado(Cliente clienteSeleccionado) {
		this.clienteSeleccionado = clienteSeleccionado;
	}
	public UsuarioOnline getUsuarioSeleccionado() {
		return usuarioSeleccionado;
	}
	public void setUsuarioSeleccionado(UsuarioOnline usuarioSeleccionado) {
		this.usuarioSeleccionado = usuarioSeleccionado;
	}
	
	//5.Action Controllers
	public String asignar()
	{
		clienteSeleccionado.setUsuarioOnline(usuarioSeleccionado);
		cdao.actualizarCliente(clienteSeleccionado);
		this.cargarDatos();
		FacesContext ctx = FacesContext.getCurrentInstance();
		ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Sistema", "Se ha asignado el Usuario"));
		
		//try {Thread.sleep(2000);} catch (InterruptedException e) {	}
						
	
		return null;// "/asignar-usuario.xhtml?faces-redirect=true";
	}
	
}
